package org.eiahe.hr.employeeRelation.service;

import org.eiahe.hr.employeeRelation.domain.bo.ContractTerminationApplicationBo;
import org.eiahe.hr.employeeRelation.domain.vo.ContractTerminationApplicationVo;
import org.ehe.common.mybatis.core.page.PageQuery;
import org.ehe.common.mybatis.core.page.TableDataInfo;

import java.util.List;

/**
 * 合同终止服务接口
 *
 * @author zhangnn
 */
public interface IContractTerminationService {

    /**
     * 查询合同终止申请列表
     *
     * @param bo 合同终止申请业务对象
     * @return 合同终止申请列表
     */
    List<ContractTerminationApplicationVo> selectContractTerminationApplicationList(
                    ContractTerminationApplicationBo bo);

    /**
     * 查询合同终止申请列表(分页)
     *
     * @param bo        合同终止申请业务对象
     * @param pageQuery 分页参数
     * @return 合同终止申请分页列表
     */
    TableDataInfo<ContractTerminationApplicationVo> selectContractTerminationApplicationList(
                    ContractTerminationApplicationBo bo, PageQuery pageQuery);

    /**
     * 通过申请ID查询合同终止申请信息
     *
     * @param applicationId 申请ID
     * @return 合同终止申请信息
     */
    ContractTerminationApplicationVo selectContractTerminationApplicationById(Long applicationId);

    /**
     * 新增合同终止申请
     *
     * @param bo 合同终止申请业务对象
     * @return 结果
     */
    Boolean insertContractTerminationApplication(ContractTerminationApplicationBo bo);

    /**
     * 修改合同终止申请
     *
     * @param bo 合同终止申请业务对象
     * @return 结果
     */
    Boolean updateContractTerminationApplication(ContractTerminationApplicationBo bo);

    /**
     * 批量删除合同终止申请
     *
     * @param applicationIds 需要删除的申请ID数组
     * @return 结果
     */
    Boolean deleteContractTerminationApplicationByIds(Long[] applicationIds);

    /**
     * 终止审批通过
     * @param bo
     * @return
     */
    Boolean approveContractTermination(ContractTerminationApplicationBo bo);

    /**
     * 终止审批拒绝
     * @param bo
     * @return
     */
    Boolean rejectContractTermination(ContractTerminationApplicationBo bo);
}
